package ltd.newbee.mall.recommend.service;

import ltd.newbee.mall.core.entity.Goods;
import ltd.newbee.mall.recommend.dto.ProductDTO;
import ltd.newbee.mall.recommend.dto.RelateDTO;

import java.util.List;

public interface RecommendService {
    /**
     * 获取商品表所有商品id
     *
     * @return
     */
    List<ProductDTO> getProductData();

    /**
     * 根据所有用户购买商品的记录进行数据收集
     *
     * @return List<RelateDTO>
     * 从所有用户购买商品的记录中收集数据，生成一个包含用户、商品、商品类别以及购买次数的列表，这个列表可以用于协同过滤推荐系统中的数据预处理
     * 数据来源：tb_newbee_mall_order（订单表），tb_newbee_mall_order_item（订单关联购物），tb_newbee_mall_goods_info（商品详情）
     */
    List<RelateDTO> getRelateData();

    /**
     * 根据用户的购买历史或点击行为，利用协同过滤算法进行商品推荐
     *
     * @param userId 用户ID
     * @param num    推荐商品数量
     * @return 推荐商品列表
     */
    List<Goods> recommendGoods(Long userId, Integer num);
}
